import router from '@/router/index.js'
import store from '@/store/index.js'
// import { asyncRoutes } from '@/router/index'

router.beforeEach(async(to, from, next) => {
  if (store.state.user.token) {
    // 已登录
    if (to.path === '/login') {
      // 已登录了还要去登录页则强制去主页
      next('/')
    } else {
      if (!store.state.user.profile) {
        await store.dispatch('user/getProfile')
        // 这里是获取完数据的位置
        // 这里就可以进行路由筛选和追加
        // 1.拿到所有动态路由数组
        // 2.拿到用户的menus数组  进行对照，路由name存在于menus当中就可以访问
        // const menus = store.state.user.profile.roles.menus
        // const routes = asyncRoutes.filter(item => menus.includes(item.name))
        // console.log(routes)
        const routes = await store.dispatch('permission/filterRoutes')
        console.log(routes)
        router.addRoutes([...routes, { path: '*', redirect: '/404', hidden: true }])
        // 这里刚刚追加完路由, 但是匹配过程是不会自动重新触发, 原来看不见的页面还是看不见
        // 需要手动, 相同的地址, 跳转一次, 重新触发匹配流程
        next(to.path)
        return
      }
      next()
    }
  } else {
    // 未登录
    // 创建一个白名单数组
    const whileList = ['/login', '/404']
    if (whileList.includes(to.path)) {
      // 存在则放行
      next()
    } else {
      // 如果未登录且不是去白名单页面的则强制去登录页
      next('/login')
    }
  }
})
